import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
# 信度90%
# 定义参数
n = 59  # 样本量
p0 = 0.10  # 标称次品率
alpha = 0.1  # 显著性水平

# 计算Z统计量的临界值
z_critical = norm.ppf(1 - alpha)

# 生成Z统计量的值
z_values = np.linspace(-4, 4, 1000)
pdf_values = norm.pdf(z_values)

# 绘制Z统计量的分布图
plt.figure(figsize=(10, 6))
plt.plot(z_values, pdf_values, label='Standard normal distribution')

# 标记临界值
plt.axvline(x=z_critical, color='r', linestyle='--', label=f'Critical value: Z = {z_critical:.2f}')

# 填充拒绝域
plt.fill_between(z_values, pdf_values, where=(z_values >= z_critical), color='red', alpha=0.3, label='Rejection region')

# 设置图形属性
plt.title('90% One-Proportion Z-test Distribution')
plt.xlabel('Z statistic')
plt.ylabel('Probability density')
plt.legend()
plt.grid(True)
plt.show()

#信度95%
n = 98  # 样本量
p0 = 0.10  # 标称次品率
alpha = 0.05  # 显著性水平

# 计算Z统计量的临界值
z_critical = norm.ppf(1 - alpha)

# 生成Z统计量的值
z_values = np.linspace(-4, 4, 1000)
pdf_values = norm.pdf(z_values)

# 绘制Z统计量的分布图
plt.figure(figsize=(10, 6))
plt.plot(z_values, pdf_values, label='Standard normal distribution')

# 标记临界值
plt.axvline(x=z_critical, color='r', linestyle='--', label=f'Critical value: Z = {z_critical:.2f}')

# 填充拒绝域
plt.fill_between(z_values, pdf_values, where=(z_values >= z_critical), color='red', alpha=0.3, label='Rejection region')

# 设置图形属性
plt.title('95% One-Proportion Z-test Distribution')
plt.xlabel('Z statistic')
plt.ylabel('Probability density')
plt.legend()
plt.grid(True)
plt.show()